package https

import (
	"net/http"
	"time"

	"gitee.com/xiaoyutab/xgotool/xnum"
)

// 开关配置项信息

// 切换Https参数验证规则
//
//	bol	是否跳过HTTPS证书效验 true跳过 false继续验证证书
func SwitchHttps(bol bool) {
	_default.Https = bol
}

// 设置HTTP请求超时时间
//
//	t	设置超时时间，默认0，无超时设置
func SwitchTimeout(t time.Duration) {
	_default.TimeOut = t
}

// 配置自定义的Http.Client配置项【一旦传入此配置项，将不再使用组件内的配置项，所以一旦传入此项，则超时、跳过证书等选项将失效】
// 另，此配置项具有继承性，所以在使用完以后请再次使用此项进行重置 defer https.SwitchClient(nil) 或者 defer https.ClientClose()
// 或若需要继续使用，则直接将其放在https.Regedit()注入配置附近
//
//	client	自定义的Client配置
func SwitchClient(client *http.Client) {
	_default.client = client
}

// 添加不需要展示的Header头
//
//	h	要去除的header中的key标示
func SwitchAddNoHeader(h string) {
	if xnum.InArray(h, _default.NoHeaderKeys) {
		return
	}
	_default.NoHeaderKeys = append(_default.NoHeaderKeys, h)
}

// 移除不需要展示的Header头
//
//	h	要显示的header中的key标示
func SwitchRemoveNoHeader(h string) {
	if !xnum.InArray(h, _default.NoHeaderKeys) {
		return
	}
	_default.NoHeaderKeys = xnum.RemoveStringArray(h, _default.NoHeaderKeys)
}

// 添加不需要展示Body的URL网址
//
//	h	移除body的URL网址
func SwitchAddNoBody(h string) {
	if xnum.InArray(h, _default.NoBodyRouter) {
		return
	}
	_default.NoBodyRouter = append(_default.NoBodyRouter, h)
}

// 移除不需要展示Body的URL网址
//
//	h	要显示的body的URL网址信息
func SwitchRemoveNoBody(h string) {
	if !xnum.InArray(h, _default.NoBodyRouter) {
		return
	}
	_default.NoBodyRouter = xnum.RemoveStringArray(h, _default.NoBodyRouter)
}

// 获取不显示Header的配置列表
func SwitchGetNoHeader() []string {
	return _default.NoHeaderKeys
}

// 获取不显示Body的配置列表
func SwitchGetNoBody() []string {
	return _default.NoBodyRouter
}
